
// import path from 'path';
import { defineConfig, loadEnv } from "vite";
import { getEnv } from './build/getEnv'
// 可以使用 defineConfig 工具函数，这样不用 jsdoc 注解也可以获取类型提示：
import vue from '@vitejs/plugin-vue';
import { resolve } from 'path'
import presetEnv from 'postcss-preset-env'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
// import ElementPlus from 'unplugin-element-plus/vite'
export default defineConfig((config) => {
  //   interface ConfigEnv {
  //     /**
  //      * 'serve': during dev (`vite` command)
  //      * 'build': when building for production (`vite build` command)
  //      */
  //     command: 'build' | 'serve';
  //     mode: string;
  //     isSsrBuild?: boolean;
  //     isPreview?: boolean;
  // }
  // 可以根据config参数command（命令）的不同和mode（开发环境或生产环境）的不同做不同环境的配置

  const root = process.cwd(); // 项目根目录
  // mode表示当前环境，root表示项目根目录,''表示前缀
  const env = loadEnv(config.mode, root);//加载环境变量 loadEnv是Vite提供的函数，可以加载.env文件里的环境变量
  console.log(env)
  const ViteEnv = getEnv(env) // 获取环境变量
  return {
    // 配置选项
    server: {
      port: ViteEnv.VITE_APP_PORT || 3000,//端口
      open: ViteEnv.VITE_APP_OPEN || true,//开发服务器启动时，自动在浏览器中打开应用程序。当该值为字符串时，它将被用作 URL 的路径名。
    },
    esbuild: {
      pure: ViteEnv.VITE_DROP_CONSOLE ? ['console.log'] : [], // 去除console.log
    },
    plugins: [
      vue(),
      AutoImport({
        resolvers: [ElementPlusResolver()],
        imports: ["vue", "vue-router"], // 自动导入 Vue 相关函数
      }),
      Components({
        resolvers: [ElementPlusResolver()],
      }),
      // ElementPlus()
    ],
    build: {
      modulePreload: {
        polyfill:true
      },
      minify: true, // 压缩代码
      cssCodeSplit: true, // css代码分割
      rollupOptions: {
        output: {
          manualChunks: {
            'vue-vendor': ['vue'],
            'element-plus-vendor': ['element-plus'],
          }
        }
      }
    },
    resolve: {
      alias: {
        '@': resolve(__dirname, './src'),
        '@utils': resolve(__dirname, './utils')
      }
    },
    css: {

      preprocessorOptions: {
        scss: {
          additionalData: '@use "@/src/styles/variables/base.scss";',

        }
      },
      requireModuleExtension: true,
      modules: {

        scopeBehaviour: 'local', // 使用 CSS Modules
        globalModulePaths: [/\.global\.css$/], // 匹配全局 CSS 文件
        exportGlobals: true, // 导出全局类名
        generateScopedName: '[name]__[local]__[hash:base64:5]', // 类名格式
        hashPrefix: 'viteApp_', // 哈希前缀
        localsConvention: 'camelCase' // 驼峰命名类名

      },
      postcss: {
        plugins: [
          presetEnv({
            browsers: ['last 2 versions', '> 1%', 'IE 11'], //兼容上两个版本的浏览器，IE11，市场占有率大于1%
            autoprefixer: { grid: true }
          })
        ]
      }
    },

  }
});
